The main file to run is `run.py`.

To run it, do `python run.py`. You may have to install some required packages. It will automatically download the datasets into `./data`, and save the results to `./results`. The results are .pkl files which can then be loaded by the Jupyter notebooks to plot the graphs. 

By default, run.py will run the MNIST experiment with the MLP model. To run the CNN model, open run.py and replace the line `exp_group_list = ["mnist_nls_large"]` with the line `exp_group_list = ["mnist_nls_conv"]`.

The code for these experiments is built on top of the experiment code in the paper "Painless Stochastic Gradient: Interpolation, Line-Search, and Convergence Rates" by Vaswani et al. (NeurIPS 2019, https://arxiv.org/abs/1905.09997v4). The Github repo for their code is at https://github.com/IssamLaradji/sls.


